package br.com.divulgaqui.persistence.daoimpl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import br.com.divulgaqui.entity.Especificacao;
import br.com.divulgaqui.persistence.dao.EspecificacaoDAO;
import br.com.divulgaqui.persistence.dao.JPAGenericDAO;

public class EspecificacaoDAOImpl extends JPAGenericDAO<Especificacao> implements EspecificacaoDAO{

	public EspecificacaoDAOImpl(EntityManager entityManager) {
		super(entityManager);		
	}

	@Override
	public Especificacao pesquisarEspecificacaoPorNome(Long id, String nome) {
		StringBuilder sql = new StringBuilder("from Especificacao e \n");		
		sql.append("where UPPER(e.campo) = \n");
		sql.append("'"+nome.toUpperCase()+"' \n");
		sql.append("and e.id != "+id+"");
		Query query = this.getEntityManager().createQuery(sql.toString());
		Especificacao especificacao = null;
		try {
			especificacao = (Especificacao) query.getSingleResult();
		} catch (NoResultException e) {
			return null;
		}
		return especificacao;
	}
	
	@Override
	public void excluir(Especificacao especificacao) {
		this.getEntityManager().remove(especificacao);
	}
	
	@Override
	public void excluirEspecificacaoModelo(Especificacao especificacao) {
					
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Especificacao> listarEspecificacao() {
		StringBuilder sql = new StringBuilder("from Especificacao e \n");		
		sql.append("order by e.campo");
		Query query = this.getEntityManager().createQuery(sql.toString());
		return query.getResultList();	
	}	
}
